'\" t
.TH "SYSTEMD\-NSRESOURCED\&.SERVICE" "8" "" "systemd 256.7" "systemd-nsresourced.service"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
systemd-nsresourced.service, systemd-nsresourced \- User Namespace Resource Delegation Service
.SH "SYNOPSIS"
.PP
systemd\-nsresourced\&.service
.PP
/usr/lib/systemd/systemd\-nsresourced
.SH "DESCRIPTION"
.PP
\fBsystemd\-nsresourced\fR
is a system service that permits transient delegation of a UID/GID range to a user namespace (see
\fBuser_namespaces\fR(7)) allocated by a client, via a Varlink IPC API\&.
.PP
Unprivileged clients may allocate a user namespace, and then request a UID/GID range to be assigned to it via this service\&. The user namespace may then be used to run containers and other sandboxes, and/or apply it to an id\-mapped mount\&.
.PP
Allocations of UIDs/GIDs this way are transient: when a user namespace goes away, its UID/GID range is returned to the pool of available ranges\&. In order to ensure that clients cannot gain persistency in their transient UID/GID range a BPF\-LSM based policy is enforced that ensures that user namespaces set up this way can only write to file systems they allocate themselves or that are explicitly allowlisted via
\fBsystemd\-nsresourced\fR\&.
.PP
\fBsystemd\-nsresourced\fR
automatically ensures that any registered UID ranges show up in the system\*(Aqs NSS database via the
\m[blue]\fBUser/Group Record Lookup API via Varlink\fR\m[]\&\s-2\u[1]\d\s+2\&.
.PP
Currently, only UID/GID ranges consisting of either exactly 1 or exactly 65536 UIDs/GIDs can be registered with this service\&. Moreover, UIDs and GIDs are always allocated together, and symmetrically\&.
.PP
The service provides API calls to allowlist mounts (referenced via their mount file descriptors as per Linux
\fBfsmount()\fR
API), to pass ownership of a cgroup subtree to the user namespace and to delegate a virtual Ethernet device pair to the user namespace\&. When used in combination this is sufficient to implement fully unprivileged container environments, as implemented by
\fBsystemd-nspawn\fR(1), fully unprivileged
\fIRootImage=\fR
(see
\fBsystemd.exec\fR(5)) or fully unprivileged disk image tools such as
\fBsystemd-dissect\fR(1)\&.
.PP
This service provides one
\m[blue]\fBVarlink\fR\m[]\&\s-2\u[2]\d\s+2
service:
\fBio\&.systemd\&.NamespaceResource\fR
allows registering user namespaces, and assign mounts, cgroups and network interfaces to it\&.
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1),
\fBsystemd-mountfsd.service\fR(8),
\fBsystemd-nspawn\fR(1),
\fBsystemd.exec\fR(5),
\fBsystemd-dissect\fR(1),
\fBuser_namespaces\fR(7)
.SH "NOTES"
.IP " 1." 4
User/Group Record Lookup API via Varlink
.RS 4
\%https://systemd.io/USER_GROUP_API
.RE
.IP " 2." 4
Varlink
.RS 4
\%https://varlink.org/
.RE
